package com.zhl.study.service;

import com.zhl.study.module.Peer;

import java.util.List;

/**
 * @description 表示选择哪个server去连接
 * @Author: z156940l@outlook.com
 * @className TransportSelector
 * @Date: 2024/5/20 10:37
 */
public interface TransportSelector {

    /**
     * 初始化selector
     * @param peers 可以连接的server端点信息
     * @param count client 与server建立多少个连接
     * @param clazz client实现class
     */
    void init(List<Peer> peers, int count, Class<? extends TransportClient> clazz);
    /**
     * 选择一个transport与server做交互
     * @return 网络Client
     */
    TransportClient select();

    /**
     * 释放用完的client
     * @param client
     */
    void release(TransportClient client);

    void close();
}
